# 定义一个程序员类 Coder ，定义一个工作方法 work，
# 一个睡觉方法 sleep, 一个幻想方法 imagine,
# 一个存款属性 money, 一个职位属性 title
# 1.要求其中幻想方法与存款属性为私有方法和私有属性
# 2.调用方法时效件在类定义外部调用方法,修改私有属性存款的值
# 3.代码中不能出现浪线
class Coder(object):
    def __init__(self, money, title):
        self.__money = money
        self.title = title

    def work(self):
        self.__money += 10000
        print("努力工作存钱")

    @staticmethod
    def sleep():
        print("好好睡觉")

    @staticmethod
    def __imagine():
        print("梦里啥都有啊")

    def __str__(self):
        return f"{self.title}的存款为:{self.__money}"


xm = Coder(1000, "测试工程师")
xm.work()
print(xm)


# 定义一个菜鸟类 Rookie 继承自程序员类 Coder,覆盖重写程序员类中的 work 方法, 方法内容自定
class Rookie(Coder):
    def work(self):
        print("打工不挣钱啊")


xl = Rookie(0, "手工测试工程师")
xl.work()


class God(Coder):
    def work(self):
        super().work()
        print("打工不挣钱啊")


xh = God(20000, "自动化工程师")
xh.work()
